草庐IT

Android AsyncTask 内存泄漏

全部标签

c++ - 最常见的内存/资源泄漏错误

所有优秀的C++程序员都知道如何避免内存泄漏(或套接字等资源):总是使用智能指针,i。e.:std::auto_ptr,boost::shared_ptr.始终注意对象的所有权:谁拥有、谁指派、谁负责等。但是,内存泄漏仍然会发生。发现时指出最常见的问题程序中的内存泄漏,即使您使用了上述技术。我开始:有时您会忘记将基类的析构函数定义为虚拟的。因此,所有派生类都由指向基类的指针引用,这些基类未被正确销毁并因此泄漏。 最佳答案 错误的类型远不止泄漏。从最坏到最好的顺序:内存损坏。数据被存储到不应该存储的区域。这导致了大多数安全问题并且是迄

c++ - new() 是否也为类的函数分配内存?

classAnimal{public:inta;doubled;intf(){return25;}};假设上面的代码,我尝试通过说newAnimal()来初始化一个对象,这个new()是否也为函数分配内存f()?换句话说,如果我改用这个类并执行newAnimal(),在内存分配方面有什么不同?:classAnimal{public:inta;doubled;}; 最佳答案 对于没有虚函数的类,函数本身不占用数据空间。函数是可以执行以操作数据的代码段。必须分配的是数据成员。当你有一个虚类时,通常会有一个额外的虚表指针。请注意,vtab

c++ - 动态内存和构造函数异常

今天早些时候,我发现了函数try-catchblock(实际上来自here),然后进行了一些研究-显然它们的主要用途是捕获构造函数初始化列表抛出的异常。无论如何,这让我想到了失败的构造函数,我已经到了一个只需要一点澄清的阶段。这只是我想了解更多有关该语言的内容,所以我没有实际示例,但是这里...鉴于此示例代码:classA{private:BbC*c;//classesB,C&DomittedforbrevityasnotreallyrelevantDd;publicA(intx,inty,intz)};A::A(intx,inty,intz)try:b(x),c(newC(y)),d

c++ - 释放内存时堆损坏

我有一个类如下structCliHandler{CliHandler(intargc,char**argv);~CliHandler();intdoWork();intargc_;char**argv_;private:CliHandler(constCliHandler&){}CliHandler&operator=(constCliHandler&){}};//构造函数CliHandler::CliHandler(intargc,char**argv){//setcommandlineparametersargc_=argc;argv_=(char**)malloc(argc_*s

c++ - 在 CUDA 中混合自定义内存管理和 Thrust

在我的项目中,我实现了自定义内存分配器以避免不必要地调用cudaMalloc一旦应用程序“预热”。此外,我使用自定义内核进行基本数组填充、数组之间的算术运算等,并希望通过使用Thrust来简化我的代码。并摆脱这些内核。设备上的每个数组都是通过原始指针创建和访问的(目前),我想使用device_vector和Thrust这些对象上的s方法,但我发现自己在原始指针和device_ptr之间转换一直以来,我的代码都有些困惑。我相当模糊的问题:您将/如何组织自定义内存管理的使用,Thrusts数组方法和以最易读的方式调用自定义内核? 最佳答案

c++ - 表示 2D 数据的 std::vector 中的内存泄漏

我编写了一个简单的模板化Matrix类,用于处理数据矩阵的主要应用程序。截断的矩阵代码是:templateclassMatrix{private:std::vectormatrixRepresentation;booltransposed;public:Matrix(intr,intc);intmaxRows;intmaxCols;voidsetMatrixValue(introw,intcol,Tval);TgetMatrixValue(introw,intcol);};templateMatrix::Matrix(intr,intc){maxRows=r;maxCols=c;mat

c++ - `std::mutex` 和 `std::lock` 是否保证处理器间代码中的内存同步?

我目前正在使用openMP编写在多核节点上运行的代码。openMP有一个特定的内存模型,保证在获取锁时在不同内核上运行的线程之间内存是同步的。我考虑使用C++11构造(std::threadwithstd::mutexandstd::lock)而不是openMP(因为它们更大的灵active)并想知道处理器之间的内存同步是否/如何在这里得到保证?如果没有,我该如何执行? 最佳答案 该标准在§30.4.1.2[thread.mutex.requirements.mutex]/6-25中对std::mutex的同步做出了以下保证Thee

C++ QT 内存分配

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:MemorymanagementinQt?我一直在学习Qt,并且讨论是否应该删除指向Q对象(例如QLabel)的指针。Qt是否对指向Qt对象的指针进行自动内存管理,还是必须手动删除它们?例)#include#includeintmain(intargc,char*argv[]){QApplicationapp(argc,argv);QLabel*label=newQLabel("ImTough.");label->show();intresult=app.exec();//wouldthisbenecessar

c++ - 在 Visual Studio 2012 中执行完 C++ 程序后,内存泄漏是否仍然存在?

我不是编程新手,而是C++新手。我发现当我玩和与语言互动时,我学得更好。所以我发现的一件很酷的事情是如何让VisualStudio通过以下方式提醒您程序中的任何内存泄漏:#define_CRTDBG_MAP_ALLOC#include#include然后调用_CrtDumpMemoryLeaks();在程序退出并将所有内存泄漏打印到输出窗口之前,太棒了!我的问题是发现内存泄漏后是否需要重新启动VisualStudio2012?我需要重新启动计算机吗?这些东西会泄露多久?或者Windows会在执行结束时清理所有内存吗?如果这是真的,那么在VisualStudio中以“Debug模式”运行

c++ - 核心文件的大小是否反射(reflect)了应用程序崩溃时的内存使用情况?

我的应用程序(C++onSol10-32位)崩溃了,应用程序生成的内核大小为4GB。我可以假设应用程序在即将崩溃时可能会使用最多4GB的内存(与核心文件的大小相同)吗?附言。我的应用程序是独立的,不依赖于任何其他进程。有没有办法通过核心文件检查应用程序使用的总内存? 最佳答案 是的,核心文件代表崩溃发生时进程使用的整个虚拟内存区域的转储。32位进程的核心文件不能超过4GB。在Solaris下,您可以使用位于/usr/proc/bin中的几个命令从核心文件中获取信息。特别是:filecore:将确认核心文件来自您的进程pstackco